
import { RoleViewInitDataType } from '@src/modules/account/roleModule/types'
import Role, { RoleAuthGroup, RoleType } from '@model/entity/Role/Role'
import LoginUser from '@model/entity/LoginUser/LoginUser'
import Page from '@model/Page.ts'
import { RoleViewModeEnum } from '@src/modules/account/roleModule/model'
import { SHBProductLineEnum } from '@shb-lib/tenant'

type RootStoreStateType = {
  initData: RoleViewInitDataType;
  currentSelectRole: RoleType;
  userPage: Page<LoginUser[]>;
  loading: boolean;
  tableSelection: LoginUser[];
  authGroups: RoleAuthGroup[];
  authGroupsByCreate: RoleAuthGroup[];
  roles: RoleType[];
  mode: RoleViewModeEnum;
  unAssignedUserNum: number;
  isExportEncryption: boolean;
  ProviderId:any;
  buttonList:any;
  currentProduct: SHBProductLineEnum | string;
}

type StoreStateType = RootStoreStateType
type StoreGetterType = {
  roles: Role[];
  systemRoles: Role[];
  customRoles: Role[];
  userList: LoginUser[];
}

export {
  RootStoreStateType,
  StoreGetterType
}

export default StoreStateType